S3バケットへのアクションをSNSでEメールに通知してみた

S3バケットへのアクションをSNSでEメールに通知してみた

Clock Icon2024.09.10

はじめに

こんにちは 岩崎 です。
本記事では、S3のバケットに生成・削除アクションがあった場合に、SNSでEmailに通知されるようにしてみました。

S3バケットを作成

まずはS3バケットを作成します。
スクリーンショット 2024-09-06 10.23.39.png

今回は名前を決め、他の設定は特に変更はありません。

グローバルで一意の名前を入力し、作成をクリックしバケットを作成してください。

SNSトピックの作成

次にSNSのトピックの作成と設定をします。

トピックの作成をクリックします。
image.png

タイプはスタンダードを選択。
名前を今回は「S3ObjectEvent」とします。

image.png

入力ができたら、トピックの作成 をクリックします。

サブスクリプションの作成

次にサブスクリプションを作成します。
作成したトピックを選択し、「サブスクリプションの作成」をクリックします

image.png

プロトコルはEメールを選択。
エンドポイントに通知を受け取りたいEメールアドレスを入力します。

スクリーンショット 2024-09-06 15.31.07.png

以上の設定が完了したら、サブスクリプションの作成をします。

サブスクリクションが作成されると、以下のようにサブスクリプションに追加されます。

スクリーンショット 2024-09-06 15.53.34.png

設定したEメールアドレスに通知が届くので、「Confirm subscription」をクリックします。
スクリーンショット 2024-09-06 15.49.41.png

ステータスが確認済みになったことを確認してください。
スクリーンショット 2024-09-06 17.18.54.png

アクセスポリシーの設定

次にアクセスポリシーを設定します。

作成されたトピックを選択し、編集をクリックします。
スクリーンショット 2024-09-06 17.22.07.png

アクセスポリシー - オプションがあるので、下記に変更します。

image.png

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "SNS:Publish",
      "Resource": "arn:aws:sns:ap-northeast-1:123456789012:MySNSTopic",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:::my-s3-bucket"
        }
      }
    }
  ]
}

"Resource"と"aws:SourceArn"は自身が作成したSNSトピックとS3バケット名に変更してください。

入力ができたら、「変更を保存」をします。

イベント通知の作成

次にS3でイベント通知の作成をします。

作成したバケットに移動し、プロパティの中にある「イベント通知」から「イベント通知の作成」を選択します
image.png

イベント名を設定します。
image.png

イベントタイプを今回は「すべてのオブジェクト作成イベント」と「すべてのオブジェクト削除イベント」にチェックを入れます。
image.png

さらに下の進み、送信先を「SNSトピック」を選択、「SNSトピックから選択する
SNSトピックのプルダウンから、先ほど作成したトピックを選択します。
image.png

その他はそのままで問題ありません。
完了したら、変更を保存をクリックします。

S3にアクションしてみる

上記が完了したら、該当のバケットにアップロードと削除をしてみます。

画像やテキストファイルなどなんでも良いのでアップロードしてみると、先ほどと同様に設定したEメールアドレスに通知されます。

アップロードした際は「"eventName":"ObjectCreated:Put"
削除をした際は「"eventName":"ObjectRemoved:Delete"」がメールに含まれているかと思います。

最後に

今回はオブジェクトの作成・削除の際に通知を送るようにしてみましたが、すべてを通知してしまうと、数が膨大になってしまう可能性もあるので、削除された場合などに限定しても良いかと思います。

参考になりましたら幸いです。

参考

Amazon SNSトピックの作成 - Amazon Simple Notification Service

Amazon S3 イベント通知 - Amazon Simple Storage Service

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.